This application relates, in general, to computing and methods for providing continuous computing operations despite a disaster, device failure or other cause of device unavailability.
Computing systems, such as systems having servers and databases supporting multiple users over a network, may utilize various techniques to provide data reliability in the event of a device failurexe2x80x94such as a failure of a primary database. For example, the contents of a database may be replicated to other mass secondary or backup storage devices, and an image of the state of the computing system may be periodically saved as well to secondary storage devices. In the event of a device failure or a disaster affecting the primary database, a secondary storage device is made to functionally replace the primary storage device for the computing system.
As recognized by the present inventors, after a device failure in such an arrangement, the time for transitioning from the primary to the secondary system devices may be lengthy and result in delays in the completion of computing operations that were scheduled prior to the device failure. There also may be delays in users having network access to a working computing system when the primary network or primary storage device become unavailable. Such delays may result in significant loss of revenues for businesses that rely on computing systems, or may result in an inferior quality of service experienced by the user. In the financial industry, downtime of a brokerage computing network may result in the loss of millions of dollars in revenues to the brokerage firm and to its customers.
For example, and as recognized by the present inventors, if a primary server (such as an application server) or a database fails or becomes unavailable due to a disaster, then the secondary or backup system needs to be mounted, the state of the computing system (including each of the various states of all of the user devices in the system) needs to be restored and rectified with the state of the data stored on the secondary storage device (i.e., all pointers need to be loaded into the backup system), and all user connections to the computing system need to be restored or re-established. Such a transitioning process may involve a delay of, for example, fifteen minutes to complete. During this delay period, users may be unable to continue with their use of their computing system. Further, the state of the computing systemxe2x80x94including the various states of all of the user devicesxe2x80x94may only be recoverable to the time at which the last image of the computing system was persistently saved. Hence, particular users may experience a loss of some data or may be unable to complete time-critical computing operations.
As recognized by the present inventors, what is needed is a system and method for data processing and/or data storage that provides continuous operations independent of device failure or disasterxe2x80x94so that failures or unavailability of system devices, such as application servers or databases, are transparent to end users.
It is against this background that various embodiments of the present invention were developed.
According to one embodiment of the invention, a method for providing continuous operations of a user application at a user computing device is disclosed. The method includes providing at least two servers, such as application servers, with each server running the user application concurrently and independently. Each server may have a persistent storage device associated with it for storing data. In response to a user request for data processing within the user application, the user request is transmitted to the at least two servers for processing therein. Both servers process the user request, in one embodiment. A return resultxe2x80x94corresponding to the user request as processed by one of the at least two serversxe2x80x94is passed to the user computing device. In this manner, both servers are running state accurate versions of the user application and if one of the servers fails or becomes unavailable due to a disaster or otherwise, the user requests can be continuously processed by at least the other server without any delays.
Persistent storage devices may be associated with the at least two servers to provide additional data reliability, wherein a first persistent storage device is associated with a first server of the at least two servers, and wherein a second persistent storage device is associated with a second server of the at least two servers. Furthermore, the at least two servers may be physically located at the same location, (i.e., in a data center or in a rack) or may be physically located at different locations so as to provide geographic isolation between the servers.
According to another embodiment of the invention, an apparatus for processing communications between a user device and at least two servers is disclosed. The apparatus may include a module for receiving a user request relating to an application program; a module for transmitting the user request to the at least two servers for processing therein; and a module for forwarding to the user device a result received from one of the at least two servers, wherein the result is related to the user request. The apparatus may also include one or more buffers for storing a plurality of requests received from the user device, and for storing a plurality of results received from the at least two servers.
According to another embodiment of the present invention, a system for providing continuous operations of a user application at a user computing device is disclosed. The system may include at least two servers, each server having a persistent storage device associated with it, and each server adapted to run the user application. A multicasting device is provided and processes communications between the user computing device and the at least two servers. In one example, in response to a user request for data processing within the application, the multicasting device transmits the user request to the at least two servers for processing therein. Each of the at least two servers processes the user request, in one embodiment. The multicasting device passes a return result to the user computing device from one of the at least two servers, the return result corresponding to the user request as processed by the one of the at least two servers. In one example, the multicasting device is embodied as a server coupled with a network. Further, the operating system of the first and second servers can be different operating systems, as the multicasting device may be platform independent.
According to another embodiment of the invention, a method for processing communications between a user device and at least two servers is disclosed. The method includes receiving a user request relating to an application program; transmitting the user request to the at least two servers for processing therein; and forwarding to the user device a result received from one of the at least two servers, wherein the result is related to the user request.
According to another embodiment of the present invention, a method for providing a continuously operating computing system for an application service provider having a plurality of servers servicing a plurality of user devices, each user device having a user session including user requests relating to at least one application program is disclosed. The method includes configuring at least two servers to each run the application program. A multicasting server is provided for receiving a user request relating to the application program, the multicasting server transmitting the user request to the at least two servers for processing therein. Upon receiving a first result from one of the at least two servers, the first result is forwarded to the user device. In this manner, if one of the servers is unavailable due to a disaster or otherwise, the user request can be continuously processed by at least the other server.
The features, utilities and advantages of various embodiments of the invention will be apparent from the following more particular description of embodiments of the invention as illustrated in the accompanying drawings.